単純処理のコード生成をNotionAIに任せてみた

単純処理のコード生成をNotionAIに任せてみた

NotionAIを気軽に使ってみるアドベントカレンダーの4日目です。普段はChatGPTに全投げしている使い捨てコード生成をNotionAIに任せてみました。セッションではなく永続するので便利です。
Clock Icon2024.12.04

NotionAIを気軽に使ってみるアドベントカレンダーの4日目です。

普段の業務ではChatGPTでGASのたたき台を作成していますが、NotionAIには試したことがありませんでした。NotionAIは文章作成に特化したAIだと思い込んでいたからです。試しに以下の指示を出してみることにしました。

NotionAIができること

コードに関しての説明が出てきた回にて、以下のような説明が出力されました。


NotionAIができることは以下の通りです:

  • コードの生成: JavaScriptやPythonなど、様々なプログラミング言語のコードを生成できます
  • コードの説明: 生成したコードの詳細な説明や、各部分の機能を解説できます
  • コードの最適化: 既存のコードを改善し、より効率的な実装を提案できます
  • エラー解決: コードのバグやエラーの修正方法を提案できます
  • ベストプラクティス: コーディング規約に沿った実装方法を提案できます

つまり、NotionAIは単なる文章作成ツールではなく、プログラミングの強力な支援ツールとしても活用できるのです。


正直信じられなかったのですが、実際どんなものかと試してみました。

SpreadSheetを複製するGASの生成

試しに以下の指示をしてみます。

Spreadsheetを複製するGASを書いて

出力されたGASで実際の動作が確認できました。ただし、複製元のシート名は「シート1」から変更しておいたほうがよさそうです。

function duplicateSpreadsheet() {
  // 複製したいスプレッドシートのIDを指定
  var originalSpreadsheetId = 'オリジナルのスプレッドシートのIDをここに記入';

  // 新しいスプレッドシートを作成し、そのIDを取得
  var originalSpreadsheet = SpreadsheetApp.openById(originalSpreadsheetId);
  var newSpreadsheet = SpreadsheetApp.create(originalSpreadsheet.getName() + ' - コピー');
  var newSpreadsheetId = newSpreadsheet.getId();

  // オリジナルのスプレッドシートの各シートを新しいスプレッドシートにコピー
  originalSpreadsheet.getSheets().forEach(function(sheet) {
    sheet.copyTo(newSpreadsheet).setName(sheet.getName());
  });

  // デフォルトで作成される空のシートを削除
  newSpreadsheet.deleteSheet(newSpreadsheet.getSheets()[0]);

  Logger.log('新しいスプレッドシートのID: ' + newSpreadsheetId);
}

フォルダを圧縮するPythonコード

ためしに以下の指示をしてみます。

フォルダを圧縮するPythonコードを出して


以下はPythonを使用してフォルダを圧縮するコードの一例です。このコードは、指定したフォルダをZIP形式で圧縮します。

import os
import zipfile

def zip_folder(folder_path, output_path):
    with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                file_path = os.path.join(root, file)
                arcname = os.path.relpath(file_path, folder_path)
                zipf.write(file_path, arcname)

# 使用例
folder_to_zip = '圧縮したいフォルダのパスをここに記入'
output_zip_file = '出力するZIPファイルのパスをここに記入.zip'

zip_folder(folder_to_zip, output_zip_file)

このコードを実行すると、指定したフォルダがZIPファイルとして圧縮されます。


ただ、これだけだと手軽には実行し難い状況です。そこで少し指示を変えてみます。

フォルダを圧縮するPythonコードと、それをターミナル上で実行するためのコマンドを出して。Pythonコードは圧縮対象フォルダと圧縮するzip其々のパスを引数として受け付けられるようにして。


以下は、フォルダを圧縮するPythonコードです。このコードは、圧縮対象フォルダと圧縮するZIPファイルのパスを引数として受け取ります。また、ターミナル上で実行するためのコマンドも併記しています。

import os
import zipfile
import sys

def zip_folder(folder_path, output_path):
    with zipfile.ZipFile(output_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                file_path = os.path.join(root, file)
                arcname = os.path.relpath(file_path, folder_path)
                zipf.write(file_path, arcname)

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("使用方法: python zip_folder.py <圧縮対象フォルダのパス> <出力ZIPファイルのパス>")
        sys.exit(1)

    folder_to_zip = sys.argv[1]
    output_zip_file = sys.argv[2]
    zip_folder(folder_to_zip, output_zip_file)

ターミナル上での実行方法:

python zip_folder.py 圧縮したいフォルダのパス 出力するZIPファイルのパス.zip

このコマンドを実行すると、指定したフォルダがZIPファイルとして圧縮されます。


引数にて実行できる構成での出力となりました。

あとがき

NotionAIでコード出力を指示するメリットは、複数人でワークスペースを使用している場合、結果が即座に共有されることです。共有のための追加操作が不要で、AIへの指示内容も必要に応じてその場で共有改善できます。セッションではなくページ上に永続して記録されるため、後から見直しやすいのもポイントです。

NotionAIへのコード生成指示が不安でやっていなかったけれどトライしてみたい場合は、確認しやすいシンプルな処理なものから試してみることをおすすめします。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.